package com.lk.sys.service;

import com.lk.sys.common.vo.CheckBox;
import com.lk.sys.common.vo.PageObject;
import com.lk.sys.common.vo.SysRoleMenuVo;
import com.lk.sys.entity.SysRole;

import java.util.List;

/*
 * 定义角色业务接口及方法，暴露外界对角色业务数据的访问
 * @author Lukang
 * @date 2021/12/7 下午8:51
 */
public interface SysRoleService {

    /**
     * 查询所有角色的id和角色名称
     * @author Lukang
     * @date 2022/1/2 下午4:14
     * @return java.util.List<com.lk.sys.common.vo.CheckBox>
     */
    List<CheckBox> findRoles();

    /**
     * 更新角色操作
     * @author Lukang
     * @date 2021/12/22 下午10:00
     * @param entity
     * @param menuIds
     * @return int
     */
    int updateObject(SysRole entity, Integer[] menuIds);

    /**
     * 通过角色id查询SysRoleMenuVo对象，包括角色信息及角色对应菜单id信息
     * @author Lukang
     * @date 2021/12/22 下午9:07
     * @param id
     * @return com.lk.sys.common.vo.SysRoleMenuVo
     */
    SysRoleMenuVo findObjectByRoleId(Integer id);

    /**
     * 保存角色本身信息和角色菜单关系信息
     * @author Lukang
     * @date 2021/12/16 下午9:35
     * @param entity
     * @param menuIds
     * @return int
     */
    int saveObject(SysRole entity, Integer[] menuIds);

    /**
     * 基于角色名称和当前页码值查询角色数据
     * @author Lukang
     * @date 2021/12/7 下午8:54
     * @param name
     * @param pageCurrent
     * @return com.lk.sys.common.vo.PageObject<com.lk.sys.entity.SysRole>
     */
    PageObject<SysRole> findPageObjects(String name, Long pageCurrent);

    /**
     * 基于角色id删除角色
     * @author Lukang
     * @date 2021/12/8 下午10:05
     * @param id
     * @return int
     */
    int deleteObjectById(Integer id);

}
